package com.hooper.util;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;

/**
 * @author Tim Hooper
 * @version 1.3
 * @time 2022/12/13/19:26
 */
@SuppressWarnings("unused")
public class RandomUtil {

    private static String enNameSeparator = "_";

    private static final Random RANDOM = new Random();
    /**
     * random English name Array
     */
    private static final String[] NAME_ARRAY = new String[]{"Jack", "Tom", "Tim", "Hooper", "Hopper", "Jane", "Jacob", "Rihana", "Taylor", "Arina", "Anna", "Frank", "Rue", "Emma", "Olivia", "William", "James", "Lucas",
            "Ella", "Hela", "Emily", "Zac", "Jac", "Jennifer", "Robert", "Patricia", "Richard", "Andrew", "Steven", "Eric", "Larry", "Sam", "Smith"};
    /**
     * id number strict code
     */
    public static String[] STRICT_CODE = {"110000", "110100", "110101", "110102", "110103", "110104", "110105", "110106", "110107", "110108", "110109",
            "310110", "310112", "310113", "310114", "310115", "310116", "310117", "310200", "310225", "310226", "310229", "310230", "320000", "320100", "320101", "320102", "320103", "320104", "320105", "320106", "320107", "320111", "320112", "320113", "320114", "320121", "320122", "320123", "320124", "320125", "320200", "320201", "320202", "320203", "320204", "320211", "320281", "320282", "320283", "320300", "320301", "320302", "320303", "320304", "320305", "320311", "320321", "320322", "320323", "320324", "320381", "320382", "320400", "320401", "320402", "320404", "320405", "320411", "320481", "320482", "320483", "320500", "320501", "320502", "320503", "320504", "320511", "320581", "320582", "320583", "320584", "320585", "320586", "320600", "320601", "320602", "320611", "320621", "320623", "320681", "320682", "320683", "320684", "320700", "320701", "320703", "320704", "320705", "320706", "320721", "320722", "320723", "320724", "320800", "320801", "320802", "320811", "320821", "320826", "320829", "320830", "320831", "320882", "320900", "320901", "320902", "320921", "320922", "320923", "320924", "320925", "320928", "320981", "320982", "321000", "321001", "321002", "321011", "321023", "321027", "321081", "321084", "321088", "321100", "321101", "321102", "321111", "321121", "321181", "321182", "321183", "321200", "321201", "321202", "321203", "321281", "321282", "321283", "321284", "321300", "321301", "321302", "321321", "321322", "321323", "321324", "330000", "330100", "330101", "330102", "330103", "330104", "330105", "330106", "330108", "330122", "330127", "330181", "330182", "330183", "330184", "330185", "330200", "330201", "330203", "330204", "330205", "330206", "330211", "330225", "330226", "330227", "330281", "330282", "330283", "330300", "330301", "330302", "330303", "330304", "330322", "330324", "330326", "330327", "330328", "330329", "330381", "330382", "330400", "330401", "330402", "330411", "330421", "330424", "330481", "330482", "330483", "330500", "330501", "330521", "330522", "330523", "330600", "330601", "330602", "330621", "330624", "330681", "330682", "330683", "330700", "330701", "330702", "330721", "330723", "330726", "330727", "330781", "330782", "330783", "330784", "330800", "330801", "330802", "330821", "330822", "330824", "330825", "330881", "330900", "330901", "330902", "330903", "330921", "330922", "331000", "331001", "331002", "331003", "331004", "331021", "331022", "331023", "331024", "331081", "331082", "332500", "332501", "332502", "332522", "332523", "332525", "332526", "332527", "332528", "332529", "340000", "340100", "340101", "340102", "340103", "340104", "340111", "340121", "340122", "340123", "340200", "340201", "340202", "340203", "340204", "340207", "340221", "340222", "340223", "340300", "340301", "340302", "340303", "340304", "340311", "340321", "340322", "340323", "340400", "340401", "340402", "340403", "340404", "340405", "340406", "340421", "340500", "340501", "340502", "340503", "340504", "340505", "340521", "340600", "340601", "340602", "340603", "340604", "340621", "340700", "340701", "340702", "340703", "340711", "340721", "340800", "340801", "340802", "340803", "340811", "340822", "340823", "340824", "340825", "340826", "340827", "340828", "340881", "341000", "341001", "341002", "341003", "341004", "341021", "341022", "341023", "341024", "341100", "341101", "341102", "341103", "341122", "341124", "341125", "341126", "341181", "341182", "341200", "341201", "341202", "341203", "341204", "341221", "341222", "341223", "341224", "341225", "341226", "341227", "341281", "341282", "341300", "341301", "341302", "341321", "341322", "341323", "341324", "342400", "342401", "342422", "342423", "342425", "342426", "342427", "342500", "342501", "342502", "342522", "342523", "342529", "342530", "342531", "342600", "342601", "342622", "342623", "342625", "342626", "342900", "342901", "342921", "342922", "342923", "350000", "350100", "350101", "350102", "350103", "350104", "350105", "350111", "350121", "350122", "350123", "350124", "350125", "350128", "350181", "350182", "350200", "350201", "350202", "350203", "350204", "350205", "350206", "350211", "350212", "350300", "350301", "350302", "350303", "350321", "350322", "350400", "350401", "350402", "350403", "350421", "350423", "350424", "350425", "350426", "350427", "350428", "350429", "350430", "350481", "350500", "350501", "350502", "350503", "350504", "350521", "350524", "350525", "350526", "350527", "350581", "350582", "350583", "350600", "350601", "350602", "350603", "350622", "350623", "350624", "350625", "350626", "350627", "350628", "350629", "350681", "350700", "350701", "350702", "350721", "350722", "350723", "350724", "350725", "350781", "350782", "350783", "350784", "350800", "350801", "350802", "350821", "350822", "350823", "350824", "350825", "350881", "352200", "352201", "352202", "352203", "352225", "352227", "352228", "352229", "352230", "352231", "360000", "360100", "360101", "360102", "360103", "360104", "360105", "360111", "360121", "360122", "360123", "360124", "360200", "360201", "360202", "360203", "360222", "360281", "360300", "360301", "360302", "360313", "360321", "360322", "360323", "360400", "360401", "360402", "360403", "360421", "360423", "360424", "360425", "360426", "360427", "360428", "360429", "360430", "360481", "360500", "360501", "360502", "360521", "360600", "360601", "360602", "360622", "360681", "360700", "360701", "360702", "360721", "360722", "360723", "360724", "360725", "360726", "360727", "360728", "360729", "360730", "360731", "360732", "360733", "360734", "360735", "360781", "360782", "362200", "362201", "362202", "362203", "362204", "362226", "362227", "362228", "362229", "362232", "362233", "362300", "362301", "362302", "362321", "362322", "362323", "362324", "362325", "362326", "362329", "362330", "362331", "362334", "362400", "362401", "362402", "362421", "362422", "362423", "362424", "362425", "362426", "362427", "362428", "362429", "362430", "362432", "362500", "362502", "362522", "362523", "362524", "362525", "362526", "362527", "362528", "362529", "362531", "362532", "370000", "370100", "370101", "370102", "370103", "370104", "370105", "370112", "370123", "370124", "370125", "370126", "370181", "370200", "370201", "370202", "370203", "370205", "370211", "370212", "370213", "370214", "370281", "370282", "370283", "370284", "370285", "370300", "370301", "370302", "370303", "370304", "370305", "370306", "370321", "370322", "370323", "370400", "370401", "370402", "370403", "370404", "370405", "370406", "370481", "370500", "370501", "370502", "370503", "370521", "370522", "370523", "370600", "370601", "370602", "370611", "370612", "370613", "370634", "370681", "370682", "370683", "370684", "370685", "370686", "370687", "370700", "370701", "370702", "370703", "370704", "370705", "370724", "370725", "370781", "370782", "370783", "370784", "370785", "370786", "370800", "370801", "370802", "370811", "370826", "370827", "370828", "370829", "370830", "370831", "370832", "370881", "370882", "370883", "370900", "370901", "370902", "370911", "370921", "370923", "370982", "370983", "371000", "371001", "371002", "371081", "371082", "371083", "371100", "371101", "371102", "371121", "371122", "371200", "371201", "371202", "371203", "371300", "371301", "371302", "371311", "371312", "371321", "371322", "371323", "371324", "371325", "371326", "371327", "371328", "371329", "371400", "371401", "371402", "371421", "371422", "371423", "371424", "371425", "371426", "371427", "371428", "371481", "371482", "371500", "371501", "371502", "371521", "371522", "371523", "371524", "371525", "371526", "371581", "372300", "372301", "372321", "372323", "372324", "372325", "372328", "372330", "372900", "372901", "372922", "372923", "372924", "372925", "372926", "372928", "372929", "372930", "410000", "410100", "410101", "410102", "410103", "410104", "410105", "410106", "410108", "410122", "410181", "410182", "410183", "410184", "410185", "410200", "410201", "410202", "410203", "410204", "410205", "410211", "410221", "410222", "410223", "410224", "410225", "410300", "410301", "410302", "410303", "410304", "410305", "410306", "410311", "410322", "410323", "410324", "410325", "410326", "410327", "410328", "410329", "410381", "410400", "410401", "410402", "410403", "410404", "410411", "410421", "410422", "410423", "410425", "410481", "410482", "410500", "410501", "410502", "410503", "410504", "410511", "410522", "410523", "410526", "410527", "410581", "410600", "410601", "410602", "410603", "410611", "410621", "410622", "410700", "410701", "410702", "410703", "410704", "410711", "410721", "410724", "410725", "410726", "410727", "410728", "410781", "410782", "410800", "410801", "410802", "410803", "410804", "410811", "410821", "410822", "410823", "410825", "410881", "410882", "410883", "410900", "410901", "410902", "410922", "410923", "410926", "410927", "410928", "411000", "411001", "411002", "411023", "411024", "411025", "411081", "411082", "411100", "411101", "411102", "411121", "411122", "411123", "411200", "411201", "411202", "411221", "411222", "411224", "411281", "411282", "411300", "411301", "411302", "411303", "411321", "411322", "411323", "411324", "411325", "411326", "411327", "411328", "411329", "411330", "411381", "411400", "411401", "411402", "411403", "411421", "411422", "411423", "411424", "411425", "411426", "411481", "411500", "411501", "411502", "411503", "411521", "411522", "411523", "411524", "411525", "411526", "411527", "411528", "412700", "412701", "412702", "412721", "412722", "412723", "412724", "412725", "412726", "412727", "412728", "412800", "412801", "412821", "412822", "412823", "412824", "412825", "412826", "412827", "412828", "412829", "420000", "420100", "420101", "420102", "420103", "420104", "420105", "420106", "420107", "420111", "420112", "420113", "420114", "420115", "420116", "420117", "420200", "420201", "420202", "420203", "420204", "420205", "420222", "420281", "420300", "420301", "420302", "420303", "420321", "420322", "420323", "420324", "420325", "420381", "420500", "420501", "420502", "420503", "420504", "420505", "420521", "420525", "420526", "420527", "420528", "420529", "420581", "420582", "420583", "420600", "420601", "420602", "420606", "420621", "420624", "420625", "420626", "420682", "420683", "420684", "420700", "420701", "420702", "420703", "420704", "420800", "420801", "420802", "420821", "420822", "420881", "420900", "420901", "420902", "420921", "420922", "420923", "420981", "420982", "420983", "420984", "421000", "421001", "421002", "421003", "421022", "421023", "421024", "421081", "421083", "421087", "421100", "421101", "421102", "421121", "421122", "421123", "421124", "421125", "421126", "421127", "421181", "421182", "421200", "421201", "421202", "421221", "421222", "421223", "421224", "422800", "422801", "422802", "422822", "422823", "422825", "422826", "422827", "422828", "429000", "429001", "429004", "429005", "429006", "429021", "430000", "430100", "430101", "430102", "430103", "430104", "430105", "430111", "430121", "430122", "430124", "430181", "430200", "430201", "430202", "430203", "430204", "430211", "430221", "430223", "430224", "430225", "430281", "430300", "430301", "430302", "430304", "430321", "430381", "430382", "430400", "430401", "430402", "430403", "430404", "430411", "430412", "430421", "430422", "430423", "430424", "430426", "430481", "430482", "430500", "430501", "430502", "430503", "430511", "430521", "430522", "430523", "430524", "430525", "430527", "430528", "430529", "430581", "430600", "430601", "430602", "430603", "430611", "430621", "430623", "430624", "430626", "430681", "430682", "430700", "430701", "430702", "430703", "430721", "430722", "430723", "430724", "430725", "430726", "430781", "430800", "430801", "430802", "430811", "430821", "430822", "430900", "430901", "430902", "430903", "430921", "430922", "430923", "430981", "431000", "431001", "431002", "431003", "431021", "431022", "431023", "431024", "431025", "431026", "431027", "431028", "431081", "431100", "431101", "431102", "431103", "431121", "431122", "431123", "431124", "431125", "431126", "431127", "431128", "431129", "431200", "431201", "431202", "431221", "431222", "431223", "431224", "431225", "431226", "431227", "431228", "431229", "431230", "431281", "432500", "432501", "432502", "432503", "432522", "432524", "433000", "433001", "433100", "433101", "433122", "433123", "433124", "433125", "433126", "433127", "433130", "440000", "440100", "440101", "440102", "440103", "440104", "440105", "440106", "440107", "440111", "440112", "440181", "440182", "440183", "440184", "440200", "440201", "440202", "440203", "440204", "440221", "440222", "440224", "440229", "440232", "440233", "440281", "440282", "440300", "440301", "440303", "440304", "440305", "440306", "440307", "440308", "440400", "440401", "440402", "440421", "440500", "440501", "440506", "440507", "440508", "440509", "440510", "440523", "440582", "440583", "440600", "440601", "440602", "440603", "440681", "440682", "440683", "440684", "440700", "440701", "440703", "440704", "440781", "440782", "440783", "440784", "440785", "440800", "440801", "440802", "440803", "440804", "440811", "440823", "440825", "440881", "440882", "440883", "440900", "440901", "440902", "440923", "440981", "440982", "440983", "441200", "441201", "441202", "441203", "441223", "441224", "441225", "441226", "441283", "441284", "441300", "441301", "441302", "441322", "441323", "441324", "441381", "441400", "441401", "441402", "441421", "441422", "441423", "441424", "441426", "441427", "441481", "441500", "441501", "441502", "441521", "441523", "441581", "441600", "441601", "441602", "441621", "441622", "441623", "441624", "441625", "441700", "441701", "441702", "441721", "441723", "441781", "441800", "441801", "441802", "441821", "441823", "441825", "441826", "441827", "441881", "441882", "441900", "441901", "442000", "442001", "445100", "445101", "445102", "445121", "445122", "445200", "445201", "445202", "445221", "445222", "445224", "445281", "445300", "445301", "445302", "445321", "445322", "445323", "445381", "450000", "450100", "450101", "450102", "450103", "450104", "450105", "450106", "450111", "450121", "450122", "450200", "450201", "450202", "450203", "450204", "450205", "450211", "450221", "450222", "450300", "450301", "450302", "450303", "450304", "450305", "450311", "450321", "450322", "450323", "450324", "450325", "450326", "450327", "450328", "450329", "450330", "450331", "450332", "450400", "450401", "450403", "450404", "450411", "450421", "450422", "450423", "450481", "450500", "450501", "450502", "450503", "450512", "450521", "450600", "450601", "450602", "450603", "450621", "450681", "450700", "450701", "450702", "450703", "450721", "450722", "450800", "450801", "450802", "450803", "450821", "450881", "450900", "450901", "450902", "450921", "450922", "450923", "450924", "450981", "452100", "452101", "452122", "452123", "452124", "452126", "452127", "452128", "452129", "452130", "452131", "452132", "452133", "452200", "452201", "452223", "452224", "452225", "452226", "452227", "452228", "452229", "452230", "452231", "452400", "452402", "452424", "452427", "452428", "452600", "452601", "452622", "452623", "452624", "452625", "452626", "452627", "452628", "452629", "452630", "452631", "452632", "452700", "452701", "452702", "452723", "452724", "452725", "452726", "452727", "452728", "452729", "452730", "452731", "460000", "460001", "460002", "460003", "460004", "460005", "460006", "460007", "460025", "460026", "460027", "460028", "460030", "460031", "460033", "460034", "460035", "460036", "460037", "460038", "460039", "460100", "460101", "460102", "460103", "460104", "460200", "460201", "500000", "500100", "500101", "500102", "500103", "500104", "500105", "500106", "500107", "500108", "500109", "500110", "500111", "500112", "500113", "500200", "500221", "500222", "500223", "500224", "500225", "500226", "500227", "500228", "500229", "500230", "500231", "500232", "500233", "500234", "500235", "500236", "500237", "500238", "500239", "500240", "500241", "500242", "500243", "500300", "500381", "500382", "500383", "500384", "510000", "510100", "510101", "510104", "510105", "510106", "510107", "510108", "510112", "510113", "510121", "510122", "510123", "510124", "510125", "510129", "510131", "510132", "510181", "510182", "510183", "510184", "510300", "510301", "510302", "510303", "510304", "510311", "510321", "510322", "510400", "510401", "510402", "510403", "510411", "510421", "510422", "510500", "510501", "510502", "510503", "510504", "510521", "510522", "510524", "510525", "510600", "510601", "510603", "510623", "510626", "510681", "510682", "510683", "510700", "510701", "510703", "510704", "510722", "510723", "510724", "510725", "510726", "510727", "510781", "510800", "510801", "510802", "510811", "510812", "510821", "510822", "510823", "510824", "510900", "510901", "510902", "510921", "510922", "510923", "511000", "511001", "511002", "511011", "511024", "511025", "511028", "511100", "511101", "511102", "511111", "511112", "511113", "511123", "511124", "511126", "511129", "511132", "511133", "511181", "511300", "511301", "511302", "511303", "511304", "511321", "511322", "511323", "511324", "511325", "511381", "511500", "511501", "511502", "511521", "511522", "511523", "511524", "511525", "511526", "511527", "511528", "511529", "511600", "511601", "511602", "511621", "511622", "511623", "511681", "513000", "513001", "513002", "513021", "513022", "513023", "513029", "513030", "513100", "513101", "513122", "513123", "513124", "513125", "513126", "513127", "513128", "513200", "513221", "513222", "513223", "513224", "513225", "513226", "513227", "513228", "513229", "513230", "513231", "513232", "513233", "513300", "513321", "513322", "513323", "513324", "513325", "513326", "513327", "513328", "513329", "513330", "513331", "513332", "513333", "513334", "513335", "513336", "513337", "513338", "513400", "513401", "513422", "513423", "513424", "513425", "513426", "513427", "513428", "513429", "513430", "513431", "513432", "513433", "513434", "513435", "513436", "513437", "513700", "513701", "513721", "513722", "513723", "513800", "513821", "513822", "513823", "513824", "513825", "513826", "513900", "513901", "513902", "513921", "513922", "520000", "520100", "520101", "520102", "520103", "520111", "520112", "520113", "520121", "520122", "520123", "520181", "520200", "520201", "520202", "520203", "520221", "520300", "520301", "520302", "520321", "520322", "520323", "520324", "520325", "520326", "520327", "520328", "520329", "520330", "520381", "520382", "522200", "522201", "522222", "522223", "522224", "522225", "522226", "522227", "522228", "522229", "522230", "522300", "522301", "522322", "522323", "522324", "522325", "522326", "522327", "522328", "522400", "522401", "522422", "522423", "522424", "522425", "522426", "522427", "522428", "522500", "522501", "522526", "522527", "522528", "522529", "522530", "522600", "522601", "522622", "522623", "522624", "522625", "522626", "522627", "522628", "522629", "522630", "522631", "522632", "522633", "522634", "522635", "522636", "522700", "522701", "522702", "522722", "522723", "522725", "522726", "522727", "522728", "522729", "522730", "522731", "522732", "530000", "530100", "530101", "530102", "530103", "530111", "530112", "530113", "530121", "530122", "530124", "530125", "530126", "530127", "530128", "530129", "530181", "530300", "530301", "530302", "530321", "530322", "530323", "530324", "530325", "530326", "530328", "530381", "530400", "530401", "530402", "530421", "530422", "530423", "530424", "530425", "530426", "530427", "530428", "532100", "532101", "532122", "532123", "532124", "532125", "532126", "532127", "532128", "532129", "532130", "532131", "532300", "532301", "532322", "532323", "532324", "532325", "532326", "532327", "532328", "532329", "532331", "532500", "532501", "532502", "532522", "532523", "532524", "532525", "532526", "532527", "532528", "532529", "532530", "532531", "532532", "532600", "532621", "532622", "532623", "532624", "532625", "532626", "532627", "532628", "532700", "532701", "532722", "532723", "532724", "532725", "532726", "532727", "532728", "532729", "532730", "532800", "532801", "532822", "532823", "532900", "532901", "532922", "532923", "532924", "532925", "532926", "532927", "532928", "532929", "532930", "532931", "532932", "533000", "533001", "533022", "533023", "533024", "533025", "533100", "533101", "533102", "533103", "533122", "533123", "533124", "533200", "533221", "533222", "533223", "533224", "533300", "533321", "533323", "533324", "533325", "533400", "533421", "533422", "533423", "533500", "533521", "533522", "533523", "533524", "533525", "533526", "533527", "533528", "540000", "540100", "540101", "540102", "540121", "540122", "540123", "540124", "540125", "540126", "540127", "542100", "542121", "542122", "542123", "542124", "542125", "542126", "542127", "542128", "542129", "542132", "542133", "542134", "542135", "542136", "542137", "542200", "542221", "542222", "542223", "542224", "542225", "542226", "542227", "542228", "542229", "542231", "542232", "542233", "542300", "542301", "542322", "542323", "542324", "542325", "542326", "542327", "542328", "542329", "542330", "542331", "542332", "542333", "542334", "542335", "542336", "542337", "542338", "542400", "542421", "542422", "542423", "542424", "542425", "542426", "542427", "542428", "542429", "542430", "542500", "542521", "542522", "542523", "542524", "542525", "542526", "542527", "542528", "542600", "542621", "542622", "542623", "542624", "542625", "542626", "542627", "610000", "610100", "610101", "610102", "610103", "610104", "610111", "610112", "610113", "610114", "610115", "610121", "610122", "610124", "610125", "610126", "610200", "610201", "610202", "610203", "610221", "610222", "610300", "610301", "610302", "610303", "610321", "610322", "610323", "610324", "610326", "610327", "610328", "610329", "610330", "610331", "610400", "610401", "610402", "610403", "610404", "610422", "610423", "610424", "610425", "610426", "610427", "610428", "610429", "610430", "610431", "610481", "610500", "610501", "610502", "610521", "610522", "610523", "610524", "610525", "610526", "610527", "610528", "610581", "610582", "610600", "610601", "610602", "610621", "610622", "610623", "610624", "610625", "610626", "610627", "610628", "610629", "610630", "610631", "610632", "610700", "610701", "610702", "610721", "610722", "610723", "610724", "610725", "610726", "610727", "610728", "610729", "610730", "612400", "612401", "612422", "612423", "612424", "612425", "612426", "612427", "612428", "612429", "612430", "612500", "612501", "612522", "612523", "612524", "612525", "612526", "612527", "612700", "612701", "612722", "612723", "612724", "612725", "612726", "612727", "612728", "612729", "612730", "612731", "612732", "620000", "620100", "620101", "620102", "620103", "620104", "620105", "620111", "620121", "620122", "620123", "620200", "620201", "620300", "620301", "620302", "620321", "620400", "620401", "620402", "620403", "620421", "620422", "620423", "620500", "620501", "620502", "620503", "620521", "620522", "620523", "620524", "620525", "622100", "622101", "622102", "622103", "622123", "622124", "622125", "622126", "622200", "622201", "622222", "622223", "622224", "622225", "622226", "622300", "622301", "622322", "622323", "622326", "622400", "622421", "622424", "622425", "622426", "622427", "622428", "622429", "622600", "622621", "622623", "622624", "622625", "622626", "622627", "622628", "622629", "622630", "622700", "622701", "622722", "622723", "622724", "622725", "622726", "622727", "622800", "622801", "622821", "622822", "622823", "622824", "622825", "622826", "622827", "622900", "622901", "622921", "622922", "622923", "622924", "622925", "622926", "622927", "623000", "623001", "623021", "623022", "623023", "623024", "623025", "623026", "623027", "630000", "630100", "630101", "630102", "630103", "630104", "630105", "630121", "632100", "632121", "632122", "632123", "632124", "632125", "632126", "632127", "632128", "632200", "632221", "632222", "632223", "632224", "632300", "632321", "632322", "632323", "632324", "632500", "632521", "632522", "632523", "632524", "632525", "632600", "632621", "632622", "632623", "632624", "632625", "632626", "632700", "632721", "632722", "632723", "632724", "632725", "632726", "632800", "632801", "632802", "632821", "632822", "632823", "640000", "640100", "640101", "640102", "640103", "640111", "640121", "640122", "640200", "640201", "640202", "640203", "640204", "640221", "640222", "640223", "640300", "640301", "640302", "640321", "640322", "640323", "640324", "640381", "640382", "642200", "642221", "642222", "642223", "642224", "642225", "642226", "650000", "650100", "650101", "650102", "650103", "650104", "650105", "650106", "650107", "650108", "650121", "650200", "650201", "650202", "650203", "650204", "650205", "652100", "652101", "652122", "652123", "652200", "652201", "652222", "652223", "652300", "652301", "652302", "652303", "652323", "652324", "652325", "652327", "652328", "652700", "652701", "652722", "652723", "652800", "652801", "652822", "652823", "652824", "652825", "652826", "652827", "652828", "652829", "652900", "652901", "652922", "652923", "652924", "652925", "652926", "652927", "652928", "652929", "653000", "653001", "653022", "653023", "653024", "653100", "653101", "653121", "653122", "653123", "653124", "653125", "653126", "653127", "653128", "653129", "653130", "653131", "653200", "653201", "653221", "653222", "653223", "653224", "653225", "653226", "653227", "654000", "654001", "654100", "654101", "654121", "654122", "654123", "654124", "654125", "654126", "654127", "654128", "654200", "654201", "654202", "654221", "654223", "654224", "654225", "654226", "654300", "654301", "654321", "654322", "654323", "654324", "654325", "654326", "659000", "659001", "110101", "110102", "110103", "110104", "110105", "110106", "110107", "110108", "110109", "110111", "110221", "110222", "110223", "110224", "110226", "110227", "110228", "110229", "120101", "120102", "120103", "120104", "120105", "120106", "120107", "120108", "120109", "120110", "120111", "120112", "120113", "120221", "120222", "120223", "120224", "120225", "130101", "130102", "130103", "130104", "130105", "130106", "130107", "130121", "130122", "130123", "130124", "130125", "130126", "130127", "130128", "130129", "130130", "130131", "130132", "130133", "130181", "130182", "130183", "130184", "130201", "130202", "130203", "130204", "130205", "130206", "130221", "130222", "130223", "130224", "130225", "130226", "130227", "130229", "130230", "130281", "130301", "130302", "130303", "130304", "130321", "130322", "130323", "130324", "130401", "130402", "130403", "130404", "130406", "130421", "130423", "130424", "130425", "130426", "130427", "130428", "130429", "130430", "130431", "130432", "130433", "130434", "130435", "130481", "130501", "130502", "130503", "130521", "130522", "130523", "130524", "130525", "130526", "130527", "130528", "130529", "130530", "130531", "130532", "130533", "130534", "130535", "130581", "130582", "130601", "130602", "130603", "130604", "130621", "130622", "130701", "130702", "130703", "130705", "130706", "130721", "130722", "130723", "130724", "130725", "130726", "130727", "130728", "130729", "130730", "130731", "130732", "130733", "130801", "130802", "130803", "130804", "130821", "130822", "130823", "130824", "130825", "130826", "130827", "130828", "130901", "130902", "130903", "130904", "130921", "130922", "130923", "130924", "130925", "130926", "130927", "130928", "130929", "130930", "130981", "130982", "130983", "130984", "131001", "131002", "131022", "131023", "131024", "131025", "131026", "131028", "131081", "131082", "132401", "132402", "132403", "132404", "132421", "132423", "132424", "132425", "132426", "132427", "132428", "132429", "132432", "132433", "132434", "132435", "132437", "132438", "132441", "132442", "133001", "133002", "133023", "133024", "133025", "133026", "133027", "133028", "133029", "133030", "133031", "140101", "140102", "140103", "140104", "140112", "140113", "140121", "140122", "140123", "140181", "140201", "140202", "140203", "140211", "140212", "140221", "140222", "140223", "140224", "140225", "140226", "140227", "140301", "140302", "140303", "140311", "140321", "140322", "140401", "140402", "140411", "140421", "140422", "140423", "140424", "140425", "140426", "140427", "140428", "140429", "140430", "140431", "140501", "140502", "140511", "140521", "140522", "140524", "140581", "140601", "140602", "140603", "140621", "140622", "140623", "140624", "142201", "142202", "142222", "142223", "142225", "142226", "142227", "142228", "142229", "142230", "142231", "142232", "142233", "142234", "142301", "142321", "142322", "142323", "142325", "142326", "142327", "142328", "142329", "142330", "142331", "142332", "142333", "142401", "142402", "142421", "142422", "142423", "142424", "142427", "142429", "142430", "142431", "142433", "142601", "142602", "142603", "142621", "142622", "142623", "142625", "142627", "142628", "142629", "142630", "142631", "142632", "142633", "142634", "142635", "142636", "142701", "142722", "142723", "142724", "142725", "142726", "142727", "142728", "142729", "142730", "142731", "142732", "142733", "150101", "150102", "150103", "150104", "150105", "150121", "150122", "150201", "150202", "150203", "150204", "150205", "150206", "150207", "150221", "150222", "150301", "150302", "150303", "150304", "150401", "150402", "150403", "150404", "150421", "150422", "150423", "150424", "150425", "150426", "150428", "150429", "150430", "152101", "152102", "152103", "152104", "152122", "152123", "152125", "152126", "152127", "152128", "152129", "152130", "152131", "152201", "152221", "152222", "152223", "152224", "152301", "152302", "152322", "152323", "152324", "152325", "152326", "152327", "152501", "152502", "152522", "152523", "152524", "152525", "152526", "152527", "152528", "152529", "152530", "152531", "152601", "152602", "152621", "152622", "152623", "152624", "152625", "152626", "152627", "152629", "152630", "152631", "152632", "152633", "152634", "152701", "152722", "152723", "152724", "152725", "152726", "152727", "152728", "152801", "152822", "152823", "152824", "152825", "152826", "152827", "152921", "152922", "152923", "210101", "210102", "210103", "210104", "210105", "210106", "210111", "210112", "210113", "210114", "210122", "210123", "210124", "210181", "210201", "210202", "210203", "210204", "210211", "210212", "210213", "210224", "210281", "210282", "210283", "210301", "210302", "210303", "210304", "210311", "210321", "210323", "210381", "210401", "210402", "210403", "210404", "210411", "210421", "210422", "210423", "210501", "210502", "210503", "210504", "210511", "210521", "210522", "210601", "210602", "210603", "210604", "210621", "210624", "210681", "210701", "210702", "210703", "210711", "210725", "210726", "210727", "210781", "210801", "210802", "210803", "210804", "210811", "210881", "210882", "210901", "210902", "210903", "210904", "210905", "210911", "210921", "210922", "211001", "211002", "211003", "211004", "211005", "211011", "211021", "211022", "211101", "211102", "211103", "211121", "211122", "211201", "211202", "211204", "211221", "211223", "211224", "211281", "211282", "211301", "211302", "211303", "211321", "211322", "211324", "211381", "211382", "211401", "211402", "211403", "211404", "211421", "211422", "211481", "220101", "220102", "220103", "220104", "220105", "220111", "220122", "220124", "220125", "220181", "220182", "220201", "220202", "220203", "220204", "220211", "220221", "220223", "220281", "220282", "220283", "220301", "220302", "220303", "220322", "220323", "220324", "220381", "220401", "220402", "220403", "220421", "220422", "220501", "220502", "220503", "220521", "220523", "220524", "220581", "220582", "220601", "220602", "220603", "220621", "220622", "220623", "220681", "220701", "220702", "220721", "220722", "220723", "220801", "220802", "220821", "220822", "220881", "220882", "222401", "222402", "222403", "222404", "222405", "222406", "222424", "222426", "230101", "230102", "230103", "230104", "230105", "230106", "230107", "230108", "230121", "230123", "230124", "230125", "230181", "230201", "230202", "230203", "230204", "230205", "230206", "230207", "230208", "230221", "230223", "230224", "230225", "230227", "230229", "230230", "230231", "230281", "230301", "230302", "230303", "230304", "230305", "230306", "230307", "230321", "230322", "230401", "230402", "230403", "230404", "230405", "230406", "230407", "230421", "230422", "230501", "230502", "230503", "230505", "230506", "230521", "230522", "230523", "230524", "230601", "230602", "230603", "230604", "230605", "230606", "230621", "230622", "230623", "230624", "230701", "230702", "230703", "230704", "230705", "230706", "230707", "230708", "230709", "230710", "230711", "230712", "230713", "230714", "230715", "230716", "230722", "230781", "230801", "230802", "230803", "230804", "230805", "230811", "230822", "230826", "230828", "230833", "230881", "230882", "230901", "230902", "230903", "230904", "230921", "231001", "231002", "231003", "231004", "231005", "231011", "231023", "231024", "231025", "231081", "231082", "231083", "231084", "231101", "231102", "231121", "231122", "231123", "231124", "231181", "231182", "232101", "232102", "232103", "232126", "232127", "232128", "232131", "232301", "232302", "232303", "232304", "232324", "232325", "232326", "232330", "232331", "232332", "232721", "232722", "232723", "310101", "310102", "310103", "310104", "310105", "310106", "310107", "310108", "310109", "310110", "310112", "310113", "310114", "310115", "310225", "310226", "310227", "310228", "310229", "310230", "320101", "320102", "320103", "320104", "320105", "320106", "320107", "320111", "320112", "320113", "320114", "320121", "320122", "320123", "320124", "320125", "320201", "320202", "320203", "320204", "320211", "320212", "320222", "320281", "320282", "320301", "320302", "320303", "320304", "320305", "320311", "320321", "320322", "320323", "320324", "320381", "320382", "320401", "320402", "320404", "320405", "320411", "320421", "320481", "320482", "320501", "320502", "320503", "320504", "320511", "320524", "320581", "320582", "320583", "320584", "320585", "320601", "320602", "320611", "320621", "320623", "320625", "320681", "320682", "320683", "320701", "320703", "320704", "320705", "320706", "320721", "320722", "320723", "320801", "320802", "320811", "320821", "320822", "320823", "320825", "320826", "320827", "320829", "320830", "320831", "320881", "320882", "320901", "320902", "320911", "320921", "320922", "320923", "320924", "320925", "320926", "320981", "321001", "321002", "321011", "321023", "321026", "321027", "321028", "321081", "321082", "321083", "321084", "321085", "321086", "321101", "321102", "321111", "321121", "321123", "321124", "321181", "330101", "330102", "330103", "330104", "330105", "330106", "330122", "330123", "330124", "330125", "330126", "330127", "330181", "330201", "330203", "330204", "330205", "330206", "330211", "330225", "330226", "330227", "330281", "330282", "330283", "330301", "330302", "330303", "330304", "330322", "330324", "330326", "330327", "330328", "330329", "330381", "330382", "330401", "330402", "330411", "330421", "330424", "330481", "330482", "330483", "330501", "330521", "330522", "330523", "330601", "330602", "330621", "330623", "330624", "330681", "330682", "330701", "330702", "330721", "330723", "330726", "330727", "330728", "330781", "330782", "330783", "330801", "330802", "330821", "330822", "330824", "330825", "330881", "330901", "330902", "330903", "330921", "330922", "332501", "332502", "332522", "332523", "332525", "332526", "332527", "332528", "332529", "332601", "332602", "332603", "332623", "332624", "332625", "332626", "332627", "340101", "340102", "340103", "340104", "340111", "340121", "340122", "340123", "340201", "340202", "340203", "340204", "340207", "340221", "340222", "340223", "340301", "340302", "340303", "340304", "340311", "340321", "340322", "340323", "340401", "340402", "340403", "340404", "340405", "340406", "340421", "340501", "340502", "340503", "340504", "340505", "340521", "340601", "340602", "340603", "340604", "340621", "340701", "340702", "340703", "340711", "340721", "340801", "340802", "340803", "340811", "340821", "340822", "340823", "340824", "340825", "340826", "340827", "340828", "341001", "341002", "341003", "341004", "341021", "341022", "341023", "341024", "341101", "341102", "341103", "341122", "341124", "341125", "341126", "341127", "341181", "342101", "342102", "342103", "342122", "342123", "342124", "342125", "342127", "342128", "342130", "342201", "342221", "342222", "342224", "342225", "342401", "342422", "342423", "342425", "342426", "342427", "342501", "342522", "342523", "342524", "342529", "342530", "342531", "342601", "342622", "342623", "342625", "342626", "342901", "342921", "342922", "342923", "350101", "350102", "350103", "350104", "350105", "350111", "350121", "350122", "350123", "350124", "350125", "350126", "350128", "350181", "350201", "350202", "350203", "350204", "350205", "350206", "350211", "350221", "350301", "350302", "350303", "350321", "350322", "350401", "350402", "350403", "350421", "350423", "350424", "350425", "350426", "350427", "350428", "350429", "350430", "350481", "350501", "350502", "350521", "350524", "350525", "350526", "350527", "350581", "350582", "350583", "350601", "350602", "350622", "350623", "350624", "350625", "350626", "350627", "350628", "350629", "350681", "352101", "352102", "352103", "352104", "352121", "352122", "352124", "352127", "352128", "352129", "352201", "352202", "352224", "352225", "352227", "352228", "352229", "352230", "352231", "352601", "352602", "352622", "352623", "352624", "352625", "352627", "360101", "360102", "360103", "360104", "360105", "360111", "360121", "360122", "360123", "360124", "360201", "360202", "360203", "360222", "360281", "360301", "360302", "360311", "360312", "360313", "360321", "360401", "360402", "360403", "360421", "360423", "360424", "360425", "360426", "360427", "360428", "360429", "360430", "360481", "360501", "360502", "360521", "360601", "360602", "360621", "360622", "360701", "360702", "360721", "360722", "360723", "360724", "360725", "360726", "360727", "360728", "360729", "360730", "360731", "360732", "360733", "360734", "360735", "360781", "360782", "362201", "362202", "362203", "362204", "362226", "362227", "362228", "362229", "362232", "362233", "362301", "362302", "362321", "362322", "362323", "362324", "362325", "362326", "362329", "362330", "362331", "362334", "362401", "362402", "362421", "362422", "362423", "362424", "362425", "362426", "362427", "362428", "362429", "362430", "362432", "362502", "362522", "362523", "362524", "362525", "362526", "362527", "362528", "362529", "362531", "362532", "370101", "370102", "370103", "370104", "370105", "370112", "370123", "370124", "370125", "370126", "370181", "370201", "370202", "370203", "370204", "370205", "370206", "370211", "370212", "370281", "370282", "370283", "370284", "370285", "370301", "370302", "370303", "370304", "370305", "370306", "370321", "370322", "370323", "370401", "370402", "370403", "370404", "370405", "370406", "370481", "370501", "370502", "370503", "370521", "370522", "370523", "370601", "370602", "370611", "370628", "370629", "370631", "370634", "370681", "370682", "370683", "370684", "370685", "370701", "370702", "370703", "370704", "370722", "370724", "370725", "370726", "370727", "370781", "370782", "370783", "370801", "370802", "370811", "370826", "370827", "370828", "370829", "370830", "370831", "370832", "370881", "370882", "370883", "370901", "370902", "370911", "370921", "370923", "370982", "370983", "371001", "371002", "371081", "371082", "371083", "371101", "371102", "371121", "371122", "371201", "371202", "371203", "372301", "372321", "372323", "372324", "372325", "372328", "372330", "371401", "371402", "371403", "371421", "371422", "371423", "371424", "371425", "371428", "371431", "371432", "372501", "372502", "372522", "372523", "372524", "372525", "372526", "372527", "372801", "372822", "372823", "372824", "372827", "372829", "372830", "372831", "372832", "372833", "372901", "372922", "372923", "372924", "372925", "372926", "372928", "372929", "372930", "410101", "410102", "410103", "410104", "410105", "410106", "410108", "410121", "410122", "410123", "410125", "410126", "410181", "410201", "410202", "410203", "410204", "410205", "410211", "410221", "410222", "410223", "410224", "410225", "410301", "410302", "410303", "410304", "410305", "410306", "410311", "410322", "410323", "410324", "410325", "410326", "410327", "410328", "410329", "410381", "410401", "410402", "410403", "410411", "410421", "410422", "410423", "410425", "410426", "410481", "410482", "410501", "410502", "410503", "410504", "410511", "410521", "410522", "410523", "410526", "410527", "410601", "410602", "410603", "410611", "410621", "410622", "410701", "410702", "410703", "410704", "410711", "410721", "410724", "410725", "410726", "410727", "410728", "410781", "410782", "410801", "410802", "410803", "410804", "410811", "410821", "410822", "410823", "410825", "410826", "410881", "410882", "410901", "410902", "410922", "410923", "410926", "410927", "410928", "411001", "411002", "411023", "411024", "411081", "411082", "411101", "411102", "411121", "411122", "411123", "411201", "411202", "411221", "411222", "411224", "411281", "411282", "412301", "412321", "412322", "412323", "412324", "412325", "412326", "412327", "412328", "412701", "412702", "412721", "412722", "412723", "412724", "412725", "412726", "412727", "412728", "412801", "412821", "412822", "412823", "412824", "412825", "412826", "412827", "412828", "412829", "412901", "412902", "412921", "412922", "412923", "412924", "412925", "412926", "412927", "412928", "412929", "412931", "412932", "413001", "413021", "413022", "413023", "413024", "413025", "413026", "413027", "413028", "413029", "420101", "420102", "420103", "420104", "420105", "420106", "420107", "420111", "420112", "420113", "420114", "420122", "420123", "420124", "420201", "420202", "420203", "420204", "420205", "420221", "420301", "420302", "420303", "420400", "420501", "420502", "420503", "420504", "420521", "420523", "420525", "420526", "420527", "420528", "420529", "420581", "420582", "420601", "420602", "420603", "420604", "420605", "420621", "420623", "420624", "420625", "420626", "420681", "420682", "420683", "420701", "420702", "420703", "420704", "420801", "420802", "420803", "420901", "420902", "420903", "420922", "420923", "420924", "420981", "420982", "420983", "422101", "422102", "422103", "422123", "422125", "422126", "422127", "422128", "422130", "422301", "422302", "422322", "422324", "422325", "422326", "422327", "422401", "422402", "422403", "422404", "422405", "422406", "422421", "422422", "422423", "422425", "422432", "422601", "422622", "422623", "422624", "422625", "422626", "422801", "422802", "422822", "422823", "422825", "422826", "422827", "422828", "422921", "430101", "430102", "430103", "430104", "430105", "430111", "430121", "430122", "430124", "430181", "430201", "430202", "430203", "430204", "430211", "430221", "430223", "430224", "430225", "430281", "430301", "430302", "430304", "430321", "430381", "430382", "430401", "430402", "430403", "430404", "430411", "430412", "430421", "430422", "430423", "430424", "430425", "430426", "430481", "430501", "430502", "430503", "430511", "430521", "430522", "430523", "430524", "430525", "430526", "430527", "430528", "430529", "430601", "430602", "430603", "430611", "430621", "430623", "430624", "430626", "430681", "430682", "430701", "430702", "430703", "430721", "430722", "430723", "430724", "430725", "430726", "430781", "430801", "430802", "430811", "430821", "430822", "432301", "432302", "432321", "432322", "432325", "432326", "432501", "432502", "432503", "432522", "432524", "432801", "432802", "432821", "432822", "432823", "432824", "432826", "432827", "432828", "432829", "432831", "432901", "432902", "432922", "432923", "432924", "432925", "432926", "432927", "432928", "432929", "432930", "433001", "433002", "433021", "433022", "433023", "433024", "433025", "433026", "433027", "433029", "433030", "433031", "433101", "433122", "433123", "433124", "433125", "433126", "433127", "433130", "440101", "440102", "440103", "440104", "440105", "440106", "440107", "440111", "440112", "440122", "440181", "440182", "440183", "440201", "440202", "440203", "440204", "440221", "440222", "440223", "440224", "440225", "440229", "440232", "440233", "440301", "440303", "440304", "440305", "440306", "440307", "440401", "440402", "440407", "440421", "440501", "440506", "440508", "440509", "440521", "440523", "440582", "440601", "440602", "440603", "440624", "440681", "440682", "440683", "440701", "440702", "440711", "440723", "440781", "440782", "440783", "440784", "440801", "440802", "440803", "440804", "440811", "440821", "440823", "440824", "440825", "440881", "440901", "440902", "440921", "440923", "440924", "440981", "441201", "441202", "441203", "441223", "441224", "441225", "441226", "441228", "441229", "441281", "441282", "441283", "441284", "441301", "441302", "441321", "441322", "441323", "441324", "441401", "441402", "441421", "441422", "441423", "441424", "441425", "441426", "441427", "441501", "441502", "441521", "441522", "441523", "441601", "441602", "441621", "441622", "441623", "441624", "441625", "441701", "441702", "441721", "441722", "441723", "441801", "441802", "441821", "441822", "441823", "441824", "441825", "441826", "441827", "441900", "442000", "445101", "445102", "445121", "445122", "445201", "445202", "445221", "445222", "445224", "445281", "450101", "450102", "450103", "450104", "450105", "450106", "450111", "450121", "450122", "450201", "450202", "450203", "450204", "450205", "450211", "450221", "450222", "450301", "450302", "450303", "450304", "450305", "450311", "450321", "450322", "450401", "450403", "450404", "450411", "450421", "450501", "450502", "450511", "450521", "450601", "450602", "450603", "450621", "452101", "452122", "452123", "452124", "452126", "452127", "452128", "452129", "452130", "452131", "452132", "452133", "452201", "452223", "452224", "452225", "452226", "452227", "452228", "452229", "452230", "452231", "452322", "452323", "452324", "452325", "452327", "452328", "452329", "452330", "452331", "452332", "452421", "452423", "452424", "452425", "452426", "452427", "452428", "452501", "452502", "452523", "452524", "452525", "452526", "452527", "452528", "452601", "452622", "452623", "452624", "452625", "452626", "452627", "452628", "452629", "452630", "452631", "452632", "452701", "452702", "452723", "452724", "452725", "452726", "452727", "452728", "452729", "452730", "452731", "452802", "452824", "452826", "460001", "460002", "460003", "460021", "460022", "460024", "460025", "460026", "460027", "460028", "460030", "460031", "460032", "460033", "460034", "460035", "460036", "460037", "460038", "460039", "460101", "460102", "460103", "460104", "460201", "510101", "510104", "510105", "510106", "510107", "510108", "510112", "510113", "510121", "510122", "510123", "510124", "510125", "510128", "510129", "510130", "510131", "510132", "510181", "510182", "510201", "510202", "510203", "510211", "510212", "510213", "510214", "510215", "510216", "510217", "510221", "510222", "510223", "510224", "510227", "510228", "510230", "510231", "510232", "510281", "510282", "510283", "510301", "510302", "510303", "510304", "510311", "510321", "510322", "510401", "510402", "510403", "510411", "510421", "510422", "510501", "510502", "510521", "510522", "510523", "510524", "510525", "510601", "510602", "510622", "510623", "510625", "510681", "510701", "510703", "510704", "510722", "510723", "510724", "510725", "510726", "510727", "510781", "510801", "510802", "510811", "510812", "510821", "510822", "510823", "510824", "510901", "510902", "510921", "510922", "511001", "511002", "511011", "511022", "511023", "511024", "511025", "511027", "511028", "511081", "511101", "511102", "511111", "511112", "511113", "511121", "511122", "511123", "511124", "511126", "511127", "511128", "511129", "511130", "511131", "511132", "511133", "511181", "511201", "511202", "511203", "511204", "511221", "511222", "511223", "511224", "511225", "511226", "511227", "511228", "511301", "511302", "511303", "511304", "511321", "511322", "511323", "511324", "511325", "511381", "512301", "512322", "512323", "512324", "512326", "512501", "512527", "512528", "512529", "512530", "512531", "512532", "512533", "512534", "512535", "513001", "513002", "513021", "513022", "513023", "513029", "513030", "513101", "513122", "513123", "513124", "513125", "513126", "513127", "513128", "513221", "513222", "513223", "513224", "513225", "513226", "513227", "513228", "513229", "513230", "513231", "513232", "513233", "513321", "513322", "513323", "513324", "513325", "513326", "513327", "513328", "513329", "513330", "513331", "513332", "513333", "513334", "513335", "513336", "513337", "513338", "513401", "513422", "513423", "513424", "513425", "513426", "513427", "513428", "513429", "513430", "513431", "513432", "513433", "513434", "513435", "513436", "513437", "513521", "513522", "513523", "513524", "513525", "513601", "513621", "513622", "513623", "513624", "513701", "513721", "513722", "513723", "520101", "520102", "520103", "520111", "520112", "520113", "520201", "520202", "520203", "520221", "522101", "522102", "522121", "522122", "522123", "522124", "522125", "522126", "522127", "522128", "522129", "522130", "522132", "522201", "522222", "522223", "522224", "522225", "522226", "522227", "522228", "522229", "522230", "522301", "522322", "522323", "522324", "522325", "522326", "522327", "522328", "522401", "522422", "522423", "522424", "522425", "522426", "522427", "522428", "522501", "522502", "522522", "522523", "522524", "522526", "522527", "522528", "522529", "522530", "522601", "522622", "522623", "522624", "522625", "522626", "522627", "522628", "522629", "522630", "522631", "522632", "522633", "522634", "522635", "522636", "522701", "522722", "522723", "522724", "522725", "522726", "522727", "522728", "522729", "522730", "522731", "522732", "530101", "530102", "530103", "530111", "530112", "530121", "530122", "530123", "530124", "530125", "530126", "530127", "530128", "530201", "532101", "532122", "532123", "532124", "532125", "532126", "532127", "532128", "532129", "532130", "532131", "532201", "532223", "532224", "532225", "532226", "532227", "532228", "532231", "532233", "532301", "532322", "532323", "532324", "532325", "532326", "532327", "532328", "532329", "532331", "532401", "532422", "532423", "532424", "532425", "532426", "532427", "532428", "532429", "532501", "532502", "532522", "532523", "532524", "532525", "532526", "532527", "532528", "532529", "532530", "532531", "532532", "532621", "532622", "532623", "532624", "532625", "532626", "532627", "532628", "532701", "532722", "532723", "532724", "532725", "532726", "532727", "532728", "532729", "532730", "532801", "532822", "532823", "532901", "532922", "532923", "532924", "532925", "532926", "532927", "532928", "532929", "532930", "532931", "532932", "533001", "533022", "533023", "533024", "533025", "533101", "533102", "533121", "533122", "533123", "533124", "533221", "533222", "533223", "533224", "533321", "533323", "533324", "533325", "533421", "533422", "533423", "533521", "533522", "533523", "533524", "533525", "533526", "533527", "533528", "540101", "540102", "540121", "540122", "540123", "540124", "540125", "540126", "540127", "542121", "542122", "542123", "542124", "542125", "542126", "542127", "542128", "542129", "542132", "542133", "542134", "542135", "542136", "542137", "542221", "542222", "542223", "542224", "542225", "542226", "542227", "542228", "542229", "542231", "542232", "542233", "542301", "542322", "542323", "542324", "542325", "542326", "542327", "542328", "542329", "542330", "542331", "542332", "542333", "542334", "542335", "542336", "542337", "542338", "542421", "542422", "542423", "542424", "542425", "542426", "542427", "542428", "542429", "542430", "542521", "542522", "542523", "542524", "542525", "542526", "542527", "542528", "542621", "542622", "542623", "542624", "542625", "542626", "542627", "610101", "610102", "610103", "610104", "610111", "610112", "610113", "610114", "610121", "610122", "610123", "610124", "610125", "610126", "610201", "610202", "610203", "610221", "610222", "610301", "610302", "610303", "610321", "610322", "610323", "610324", "610326", "610327", "610328", "610329", "610330", "610331", "610401", "610402", "610403", "610404", "610422", "610423", "610424", "610425", "610426", "610427", "610428", "610429", "610430", "610431", "610481", "612101", "612102", "612103", "612124", "612126", "612127", "612128", "612129", "612130", "612132", "612133", "612301", "612321", "612322", "612323", "612324", "612325", "612326", "612327", "612328", "612329", "612330", "612401", "612422", "612423", "612424", "612425", "612426", "612427", "612428", "612429", "612430", "612501", "612522", "612523", "612524", "612525", "612526", "612527", "612601", "612621", "612622", "612623", "612624", "612625", "612626", "612627", "612628", "612629", "612630", "612631", "612632", "612701", "612722", "612723", "612724", "612725", "612726", "612727", "612728", "612729", "612730", "612731", "612732", "620101", "620102", "620103", "620104", "620105", "620111", "620121", "620122", "620123", "620201", "620301", "620302", "620321", "620401", "620402", "620403", "620421", "620422", "620423", "620501", "620502", "620503", "620521", "620522", "620523", "620524", "620525", "622101", "622102", "622103", "622123", "622124", "622125", "622126", "622201", "622222", "622223", "622224", "622225", "622226", "622301", "622322", "622323", "622326", "622421", "622424", "622425", "622426", "622427", "622428", "622429", "622621", "622623", "622624", "622625", "622626", "622627", "622628", "622629", "622630", "622701", "622722", "622723", "622724", "622725", "622726", "622727", "622801", "622821", "622822", "622823", "622824", "622825", "622826", "622827", "622901", "622921", "622922", "622923", "622924", "622925", "622926", "622927", "623021", "623022", "623023", "623024", "623025", "623026", "623027", "630101", "630102", "630103", "630104", "630105", "630121", "632121", "632122", "632123", "632124", "632125", "632126", "632127", "632128", "632221", "632222", "632223", "632224", "632321", "632322", "632323", "632324", "632521", "632522", "632523", "632524", "632525", "632621", "632622", "632623", "632624", "632625", "632626", "632721", "632722", "632723", "632724", "632725", "632726", "632801", "632802", "632821", "632822", "632823", "640101", "640102", "640103", "640111", "640121", "640122", "640201", "640202", "640203", "640204", "640221", "640222", "640223", "642101", "642102", "642123", "642124", "642125", "642126", "642127", "642221", "642222", "642223", "642224", "642225", "642226", "650101", "650102", "650103", "650104", "650105", "650106", "650107", "650108", "650121", "650201", "650202", "650203", "650204", "650205", "652101", "652122", "652123", "652201", "652222", "652223", "652301", "652302", "652322", "652323", "652324", "652325", "652327", "652328", "652701", "652722", "652723", "652801", "652822", "652823", "652824", "652825", "652826", "652827", "652828", "652829", "652901", "652922", "652923", "652924", "652925", "652926", "652927", "652928", "652929", "653001", "653022", "653023", "653024", "653101", "653121", "653122", "653123", "653124", "653125", "653126", "653127", "653128", "653129", "653130", "653131", "653201", "653221", "653222", "653223", "653224", "653225", "653226", "653227", "654001", "654101", "654121", "654122", "654123", "654124", "654125", "654126", "654127", "654128", "654201", "654221", "654222", "654223", "654224", "654225", "654226", "654301", "654321", "654322", "654323", "654324", "654325", "654326", "659001",};

    /**
     * common name capital, to make the random name looks not that bad
     */
    private static final char[] COMMON_NAME_CAP = new char[]{'T', 'J', 'F', 'R', 'H', 'C', 'S'};

    /**
     * phone prefix
     */
    private static final String[] PHONE_PREFIX = new String[]{
            "130", "131", "132", "155", "156", "186", "185", "134",
            "135", "136", "137", "138", "139", "150", "151", "152", "157",
            "158", "159", "182", "183", "188", "187",
            "133", "153", "180", "181", "189", "177"
    };

    private static final String FAMILY_ONE_NAME = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻水云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任" +
            "袁柳鲍史唐费岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计成戴宋茅庞熊纪舒屈项祝董粱杜阮" +
            "席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田胡凌霍万柯卢莫房缪干解应宗丁宣邓郁单杭洪包诸左石崔吉龚程邢滑裴陆荣翁荀羊甄家封芮储靳邴" +
            "松井富乌焦巴弓牧隗山谷车侯伊宁仇祖武符刘景詹束龙叶幸司韶黎乔苍双闻莘劳逄姬冉宰桂牛寿通边燕冀尚农温庄晏瞿茹习鱼容向古戈终居衡步都耿满弘" +
            "国文东殴沃曾关红游盖益桓公晋楚闫";

    private static final String BOY_NAME = "伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达" +
            "安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心范邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽" +
            "晨辰士以建致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘家奇坤城";

    private static final String GIRL_NAME = "秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧" +
            "璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥" +
            "筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽";

    private static final String[] PROVINCE = {"河北省", "山西省", "辽宁省", "吉林省", "黑龙江省", "江苏省", "浙江省", "安徽省", "福建省", "江西省", "山东省", "河南省", "湖北省", "湖南省", "广东省", "海南省", "四川省", "贵州省", "云南省", "陕西省", "甘肃省", "青海省", "台湾省",};
    private static final String[] CITY = {"安康市", "安庆市", "安顺市", "安阳市", "鞍山市", "巴彦淖尔市", "巴中市", "白城市", "白山市", "白银市", "百色市", "蚌埠市", "包头市", "宝鸡市", "保定市", "保山市", "北海市", "本溪市", "滨州市", "沧州市", "昌都地区", "长春市", "长沙市", "长治市", "常德市", "常州市", "巢湖市", "朝阳市", "潮州市", "郴州市", "成都市", "承德市", "池州市", "赤峰市", "崇左市", "滁州市", "达州市", "大连市", "大庆市", "大同市", "丹东市", "德阳市", "德州市", "定西市", "东莞市", "东营市", "鄂尔多斯市", "鄂州市", "防城港市", "佛山市", "福州市", "抚顺市", "抚州市", "阜新市", "阜阳市", "甘南州", "赣州市", "固原市", "广安市", "广元市", "广州市", "贵港市", "贵阳市", "桂林市", "哈尔滨市", "哈密地区", "海北藏族自治州", "海东地区", "海口市", "邯郸市", "汉中市", "杭州市", "毫州市", "合肥市", "河池市", "河源市", "菏泽市", "贺州市", "鹤壁市", "鹤岗市", "黑河市", "衡水市", "衡阳市", "呼和浩特市", "呼伦贝尔市", "湖州市", "葫芦岛市", "怀化市", "淮安市", "淮北市", "淮南市", "黄冈市", "黄山市", "黄石市", "惠州市", "鸡西市", "吉安市", "吉林市", "济南市", "济宁市", "佳木斯市", "嘉兴市", "嘉峪关市", "江门市", "焦作市", "揭阳市", "金昌市", "金华市", "锦州市", "晋城市", "晋中市", "荆门市", "荆州市", "景德镇市", "九江市", "酒泉市", "开封市", "克拉玛依市", "昆明市", "拉萨市", "来宾市", "莱芜市", "兰州市", "廊坊市", "乐山市", "丽江市", "丽水市", "连云港市", "辽阳市", "辽源市", "聊城市", "临沧市", "临汾市", "临沂市", "柳州市", "六安市", "六盘水市", "龙岩市", "陇南市", "娄底市", "泸州市", "吕梁市", "洛阳市", "漯河市", "马鞍山市", "茂名市", "眉山市", "梅州市", "绵阳市", "牡丹江市", "内江市", "南昌市", "南充市", "南京市", "南宁市", "南平市", "南通市", "南阳市", "宁波市", "宁德市", "攀枝花市", "盘锦市", "平顶山市", "平凉市", "萍乡市", "莆田市", "濮阳市", "普洱市", "七台河市", "齐齐哈尔市", "钦州市", "秦皇岛市", "青岛市", "清远市", "庆阳市", "曲靖市", "衢州市", "泉州市", "日照市", "三门峡市", "三明市", "三亚市", "汕头市", "汕尾市", "商洛市", "商丘市", "上饶市", "韶关市", "邵阳市", "绍兴市", "深圳市", "沈阳市", "十堰市", "石家庄市", "石嘴山市", "双鸭山市", "朔州市", "四平市", "松原市", "苏州市", "宿迁市", "宿州市", "绥化市", "随州市", "遂宁市", "台州市", "太原市", "泰安市", "泰州市", "唐山市", "天水市", "铁岭市", "通化市", "通辽市", "铜川市", "铜陵市", "铜仁市", "吐鲁番地区", "威海市", "潍坊市", "渭南市", "温州市", "乌海市", "乌兰察布市", "乌鲁木齐市", "无锡市", "吴忠市", "芜湖市", "梧州市", "武汉市", "武威市", "西安市", "西宁市", "锡林郭勒盟", "厦门市", "咸宁市", "咸阳市", "湘潭市", "襄樊市", "孝感市", "忻州市", "新乡市", "新余市", "信阳市", "兴安盟", "邢台市", "徐州市", "许昌市", "宣城市", "雅安市", "烟台市", "延安市", "盐城市", "扬州市", "阳江市", "阳泉市", "伊春市", "伊犁哈萨克自治州", "宜宾市", "宜昌市", "宜春市", "益阳市", "银川市", "鹰潭市", "营口市", "永州市", "榆林市", "玉林市", "玉溪市", "岳阳市", "云浮市", "运城市", "枣庄市", "湛江市", "张家界市", "张家口市", "张掖市", "漳州市", "昭通市", "肇庆市", "镇江市", "郑州市", "中山市", "中卫市", "舟山市", "周口市", "株洲市", "珠海市", "驻马店市", "资阳市", "淄博市", "自贡市", "遵义市",};
    private static final String[] AREA = {"伊春区", "宛城区", "卧龙区", "带岭区", "南岔区", "金山屯区", "西林区", "美溪区", "乌马河区", "翠峦区", "友好区", "新青区", "上甘岭区", "五营区", "红星区", "汤旺河区", "乌伊岭区", "榆次区"};
    private static final String[] STREET = {"黄河路", "南京路", "建设路", "中原路", "安波路", "新四路", "安汾路", "安福路", "安国路", "安化路", "安澜路", "安龙路", "安仁路", "安顺路", "安亭路", "安图路", "安业路", "安义路", "安远路", "鞍山路", "鞍山支路", "澳门路", "八一路", "巴林路", "白城路", "白城南路", "白渡路", "白渡桥", "白兰路", "白水路", "白玉路", "百安路（方泰镇）", "百官街", "百花街", "百色路", "板泉路", "半淞园路", "包头路", "包头南路", "宝安公路", "宝安路", "宝昌路", "宝联路", "宝林路", "宝祁路", "宝山路", "宝通路", "宝杨路", "宝源路", "保德路", "保定路", "保屯路", "保屯路", "北艾路",};
    private static final String[] HOME = {"金色家园", "长者小镇", "江南摩卡", "年华里", "满庭芳", "繁华里", "四季云顶", "盛世江南", "七里香都", "清江山水", "翠竹园", "忘忧阁", "花半里", "西子湾", "耀江花园", "阳光翠竹苑", "东新大厦", "溢盈河畔别墅", "真新六街坊", "和亭佳苑", "协通公寓", "博泰新苑", "菊园五街坊", "住友嘉馨名园", "复华城市花园", "爱里舍花园"};
    private static final String[] SPECIAL_CITY = {"北京市", "上海市", "天津市", "重庆市"};
    private static final String[] EMAIL_SUFFIX = {"163.com", "gmail.com", "qq.com", "yahoo.com", "msn.com", "163.net", "0355.com", "hotmail.com"};


    /**
     * 品牌名
     */
    public static final String[] BRAND_NAME = {"Lenovo", "Nike", "Adidas", "Sony", "HP", "APPLE", "ASUS", "HUAWEI", "DELL", "Microsoft", "SAMSUNG", "ACER", "MSI", "Google", "XiaoMi", "ZTE", "HTC", "TCL", "OnePlus", "Philips", "OPPO", "vivo", "Panasonic"};

    /**
     * generate a random city in CN
     *
     * @return return the city name
     */
    public static String randomCity() {
        return randomInt(6) == 1 ? SPECIAL_CITY[randomInt(SPECIAL_CITY.length)]
                : CITY[randomInt(CITY.length)];
    }

    /**
     * generate a random province in CN
     *
     * @return return the province name
     */
    public static String randomProvince() {
        return PROVINCE[randomInt(PROVINCE.length)];
    }

    /**
     * generate a random STREET in CN
     *
     * @return return the STREET name
     */
    public static String randomStreet() {
        return STREET[randomInt(STREET.length)];
    }

    /**
     * generate a random address in CN including province, city ,district ,street
     *
     * @return return the address name
     */
    public static String randomAddress() {
        String city = randomCity();
        String addr = city + AREA[randomInt(AREA.length)] + randomStreet() + HOME[randomInt(HOME.length)];
        for (String s : SPECIAL_CITY) {
            if (s.equals(city))
                return addr;
        }
        return randomProvince() + addr;
    }


    /**
     * random Chinese name, length between 2 and 3
     *
     * @return return the name
     */
    public static String randomCnName() {
        return randomCnName(randomInt(2) == 0);
    }

    /**
     * random Chinese name with specific gender, length between 2 and 3
     *
     * @return return the name
     */
    public static String randomCnName(boolean isGuy) {
        StringBuilder sb = new StringBuilder(3);
        char famName = FAMILY_ONE_NAME.charAt(randomInt(FAMILY_ONE_NAME.length()));
        sb.append(famName);
        String choose = isGuy ? BOY_NAME : GIRL_NAME;
        int lastNameLen = randomInt(2) == 0 ? 1 : 2;
        sb.append(choose.charAt(randomInt(choose.length())));
        return lastNameLen == 1 ? sb.toString() : sb.append(choose.charAt(randomInt(choose.length()))).toString();
    }


    /**
     * random String with specific length
     * the String will just include letters but not other chars
     *
     * @param len the random String's length
     * @return return the String
     */
    public static String randomString(int len) {
        StringBuilder builder = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            builder.append(randomChar());
        }
        return builder.toString();
    }

    /**
     * random English name with one Uppercase + (len - 1) Lowercase letters,
     * the name might be not very good, if u wanna better name try the randomName() function
     *
     * @param len the name's length, it can't be less than 2
     * @return return the name
     */
    public static String randomEnName(int len) {
        if (len <= 2) {
            throw new NumberFormatException("the len of a name must be more than 2 letters");
        }
        return nameCapital() + randomString(len - 1).toLowerCase();
    }


    /**
     * get a more readable name, like Jack Tom; the name was created by two parts like Tim_Hooper
     *
     * @return return the english name
     */
    public static String randomEnName() {
        if (randomInt(3) != 0) {
            int i = randomInt(NAME_ARRAY.length);
            String firstName = NAME_ARRAY[i];
            String lastName;
            if (randomInt(NAME_ARRAY.length) == i) {
                lastName = NAME_ARRAY[i == 0 ? i + randomInt(1, NAME_ARRAY.length - 1) : i - 1];
            } else {
                lastName = NAME_ARRAY[randomInt(NAME_ARRAY.length)];
            }
            return firstName + enNameSeparator + lastName;
        }

        return randomEnName(4) + enNameSeparator + randomEnName(4);
    }

    /**
     * random name
     *
     * @return return a name, it could be Chinese name or English name
     */
    public static String randomName() {
        return randomInt(2) == 0 ? randomCnName() : randomEnName();
    }


    /**
     * generate more common name Capital
     *
     * @return name Capital
     */
    private static char nameCapital() {
        return COMMON_NAME_CAP[randomInt(COMMON_NAME_CAP.length)];
    }

    /**
     * random string with random len
     *
     * @return the len of the String would be between 4 and 10
     */
    public static String randomString() {
        return randomString(randomInt(4, 10));
    }

    /**
     * get a random int between start and the end
     *
     * @param start start scope
     * @param end   end scope
     * @return the num will include the start and the end
     */
    public static int randomInt(int start, int end) {
        return RANDOM.nextInt(end - start + 1) + start;
    }

    /**
     * get a random int num between 0 and bound
     *
     * @param bound the boundary
     * @return the num will not include the bound num
     * (example: if the bound is 2 then the fun can just generate 0 and 1;  2 is not included)
     */
    public static int randomInt(int bound) {
        return RANDOM.nextInt(bound);
    }

    /**
     * get a random long number.
     * it could be negative or positive
     *
     * @return
     */
    public static long randomLong() {
        return RANDOM.nextLong();
    }

    /**
     * get a random long number
     *
     * @param isPositive if isPositive is true it will just return the positive number,
     *                   or it will just return the negative number
     * @return
     */
    public static long randomLong(boolean isPositive) {
        long val = RANDOM.nextLong();
        if (isPositive) {
            return val < 0 ? ~val + 1 : val;
        }
        return val < 0 ? val : ~val + 1;
    }


    /**
     * generate a random char, the char might be upper or lower case
     *
     * @return return the char
     */
    public static char randomChar() {
        return randomInt(2) == 0 ? randomLowerLetter() : randomUpperLetter();
    }

    /**
     * generate a random uppercase letter
     *
     * @return return uppercase letter
     */
    public static char randomUpperLetter() {
        return Character.toUpperCase(randomLowerLetter());
    }

    /**
     * generate a random lowercase letter
     *
     * @return return lowercase letter
     */
    public static char randomLowerLetter() {
        return (char) (randomInt(26) + 'a');
    }

    /**
     * generate a random string with all nums
     *
     * @param len the string's length
     * @return
     */
    public static String randomNumString(int len) {
        StringBuilder builder = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            builder.append(randomInt(10));
        }
        return builder.toString();
    }

    /**
     * generate a random Chinese phone number by string type
     *
     * @return
     */
    public static String randomPhoneNum() {
        return PHONE_PREFIX[randomInt(PHONE_PREFIX.length)] +
                randomNumString(8);
    }

    /**
     * generate a random email number
     * the range of the prefix will be 6~10
     *
     * @return a random email number
     */
    public static String randomEmail() {
        return randomEmail(randomInt(6, 10));
    }

    /**
     * generate a random email number
     *
     * @param prefixLen the prefix length
     * @return a random email number
     */
    public static String randomEmail(int prefixLen) {
        String prefix = '@' + EMAIL_SUFFIX[randomInt(EMAIL_SUFFIX.length)];
        return randomInt(2) == 0
                ? randomString(prefixLen).toLowerCase() + prefix
                : randomNumString(prefixLen) + prefix;
    }

    /**
     * generate a random Chinese phone number with  area code by string type
     *
     * @return
     */
    public static String randomPhoneNum(boolean withAreaCode) {
        return withAreaCode ? "+86" + randomPhoneNum() : randomPhoneNum();
    }

    /**
     * generate a random Chinese phone number by long
     *
     * @return
     */
    public static long randomLongPhoneNum() {
        return Long.parseLong(randomPhoneNum());
    }


    /**
     * generate a random datetime
     *
     * @param startYear the lowest year
     * @return
     */
    public static LocalDateTime randomDatetime(int startYear) {
        LocalDateTime now = LocalDateTime.now();
        if (startYear > now.getYear()) throw new RuntimeException("必须在当前年份之前");
        return now.minusYears(randomInt(now.getYear() - startYear))
                .minusMonths(randomInt(12))
                .minusDays(randomInt(7))
                .minusMinutes(randomInt(60))
                .minusHours(randomInt(24))
                .minusSeconds(randomInt(60));
    }

    /**
     * generate a random datetime with String type
     *
     * @param startYear the lowest year
     * @return
     */
    public static String randomStrDatetime(int startYear) {
        return randomStrDatetime(startYear, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * generate a random datetime with String type
     *
     * @param startYear the lowest year
     * @param pattern   custom pattern
     * @return
     */
    public static String randomStrDatetime(int startYear, String pattern) {
        return DateTimeFormatter.ofPattern(pattern).format(randomDatetime(startYear));
    }

    /**
     * generate a random date
     *
     * @param startYear the lowest year
     * @return
     */
    public static LocalDate randomDate(int startYear) {
        LocalDate now = LocalDate.now();
        if (startYear > now.getYear()) throw new RuntimeException("必须在当前年份之前");
        return now.minusYears(randomInt(now.getYear() - startYear))
                .minusMonths(randomInt(30))
                .minusDays(randomInt(7));
    }

    /**
     * generate a random date with String type
     *
     * @param startYear the lowest year
     * @return
     */
    public static String randomStrDate(int startYear) {
        return randomStrDate(startYear, "yyyy-MM-dd");
    }

    /**
     * generate a random date
     *
     * @param startYear the lowest year
     * @return
     */
    public static String randomStrDate(int startYear, String pattern) {
        return DateTimeFormatter.ofPattern(pattern).format(randomDate(startYear));
    }

    public static String randomRangeDate(int start, int end, String pattern) {
        int month = (LocalDate.now().getMonthValue() + randomInt(13)) % 12;
        LocalDate date = LocalDate.of(randomInt(start, end), month + 1, randomInt(month + 1 == 2 ? 28 : 30) + 1);
        return DateTimeFormatter.ofPattern(pattern).format(date);
    }

    /**
     * 获取一个随机的身份证号
     *
     * @param endYear 最低出生年份
     * @return
     */
    public static String randomIdNumber(int endYear) {
        String birth = randomRangeDate(1960, endYear, "yyyyMMdd");
        return STRICT_CODE[randomInt(STRICT_CODE.length)] + birth + (randomInt(11) == 0 ? randomNumString(3) + 'x' : randomNumString(4));
    }

    /**
     * 获取一个随机的身份证号
     *
     * @return 年龄范围在1960 ~ 当前年份 - 10
     */
    public static String randomIdNumber() {
        return randomIdNumber(LocalDate.now().getYear() - 10);
    }


    /**
     * 获取一个随机的品牌
     *
     * @return 英文品牌名
     */
    public static String randomBrand() {
        return BRAND_NAME[randomInt(BRAND_NAME.length)];
    }

    /**
     * 将随机生成的LocalDateTime转为Date类型
     * @return Date 类型
     */
    public static Date toDate(LocalDateTime localDateTime) {
        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     * 将随机生成的LocalDate转为Date类型
     * @return Date 类型
     */
    public static Date toDate(LocalDate localDate) {
        return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
    }
}
